package cn.edu.cdu.health.common;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

//表示把当前类声明为全局异常处理器，能拦截控制器controller中的异常
//底层基于AOP实现（面向切面）
@Slf4j
//@Slf4j:lombok提供的注解，用于记录日志在控制台或文件
@RestControllerAdvice
//聚合两个功能，@ResponseBody和@ControllerAdvice
public class GlobalExceptionHandler {
    //@ExceptionHandler表示处理的异常类型，声明在方法上
    @ExceptionHandler(value = BizException.class)

    public R handleBizException(BizException e){
        return R.failed(e.getMessage());
        //为了服务器安全，不能把异常原因暴露给前端
    }

    @ExceptionHandler(value = Exception.class)
    public R handleException(Exception e){
        e.printStackTrace();
        return R.failed("服务器开小差了，请稍后再试");
    }
}
